Добавил:
wso_studf
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include <iostream>
#include <ctime>
#include <vector>
#include <cmath>
using namespace std;
int getRandomNumber(int min, int max);
void fillMatrix(int N, vector<vector<int> > &matrix);
void printMatrix(int N,vector<vector<int> > &matrix);
int average(int N, vector <vector<int> > &matrix);
void changeMatrix(int N, vector <vector<int> > &matrix, int S);
int main(){
setlocale(LC_ALL, "rus");
cout << "Вариант №3" << endl;
cout << "Лабораторная работа №10" << endl;
srand(time(NULL));
int flag = 0;
while(flag != 1){
int N = getRandomNumber(7, 10);
cout << "Сгенерировано cлучайное число - для создания матрицы = " << N << endl;
vector <vector<int> > matrix(N, vector<int>(N));
fillMatrix(N, matrix);
printMatrix(N, matrix);
float S = average(N, matrix);
cout << "\nСреднее арифметическое элементов матрицы, больших 10 = " << S << ";\n" << endl;
changeMatrix(N, matrix, S);
cout << "Заменить нулями все элементы, превосходящие S.\n\n";
printMatrix(N, matrix);
cout << "Желаете выйти из бесконечного цикла? Введите 1\n";
cin >> flag;
}
return 0;
}
int getRandomNumber(int min, int max){
return static_cast<int>(min + rand() % (max - min + 1));
}
void fillMatrix(int N, vector <vector<int> > &matrix){
int col = N;
int row = 0;
for (int i = 0; i < N; i++){
col--;
for (int j = 0; j < N; j++){
if (j == 0)
row = col;
else if (j > 0 && row != N)
row++;
else{
row = N;
}
matrix[i][j] = pow((N - row), 2);
}
}
cout << endl;
}
void printMatrix(int N, vector <vector<int> > &matrix){
cout << "Вывод матрицы:\n";
for (int i = 0; i < N; i++){
for (int j = 0; j < N; j++){
cout << matrix[i][j] << "\t";
}
cout << endl;
}
}
int average(int N, vector <vector<int> > &matrix){
float mid = 0;
for (int i = 0; i < N; i++){
for (int j = 0; j < N; j++){
if (matrix[i][j] > 10){
mid += matrix[i][j];
}
}
}
return mid / (N * N);
}
void changeMatrix(int N, vector <vector<int> > &matrix, int S){
for (int i = 0; i < N; i++){
for (int j = 0; j < N; j++){
if (matrix[i][j] > S){
matrix[i][j] = 0;
}
}
}
}